package TGA.DB2.Entity;

import static javax.persistence.GenerationType.SEQUENCE;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import org.hibernate.annotations.ForeignKey;

@Entity
@Table(uniqueConstraints = @UniqueConstraint(name = "uk_EGI", columnNames = {
		"loja_idloja", "produto_idproduto", "gradeitem_idgradeitem" }))
public class EstoqueGradeItem {

	@Id
	@GeneratedValue(strategy = SEQUENCE, generator = "seq_estoquegradeitem")
	@SequenceGenerator(name = "seq_estoquegradeitem", sequenceName = "seq_estoquegradeitem")
	private Long IDEstoqueGradeItem;

	@Column(nullable = false)
	private int estoqueAtual;

	@Column(nullable = false)
	private int estoqueMinimo;

	/*******************
	 * Relacionamentos *
	 *******************/

	@ManyToOne(optional = false)
	@ForeignKey(name = "FK_EstoqueGradeItem_Loja")
	private Loja loja;

	@ManyToOne(optional = false)
	@ForeignKey(name = "FK_EstoqueGradeItem_Produto")
	private Produto produto;

	@ManyToOne(optional = false)
	@ForeignKey(name = "FK_EstoqueGradeItem_GradeItem")
	private GradeItem gradeItem;

	/*******************
	 * Metodos *
	 *******************/

	public int getEstoqueAtual() {
		return estoqueAtual;
	}

	public void setEstoqueAtual(int estoqueAtual) {
		this.estoqueAtual = estoqueAtual;
	}

	public int getEstoqueMinimo() {
		return estoqueMinimo;
	}

	public void setEstoqueMinimo(int estoqueMinimo) {
		this.estoqueMinimo = estoqueMinimo;
	}

	public Loja getLoja() {
		return loja;
	}

	public void setLoja(Loja loja) {
		this.loja = loja;
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public EstoqueGradeItem(int estoqueAtual, int estoqueMinimo, Loja loja,
			Produto produto, GradeItem gradeItem) {
		super();
		this.estoqueAtual = estoqueAtual;
		this.estoqueMinimo = estoqueMinimo;
		this.loja = loja;
		this.produto = produto;
		this.gradeItem = gradeItem;
	}

	public EstoqueGradeItem() {
	}
}